module WillPaginateTwitterBootstrap
  class Railtie < Rails::Railtie
    initializer "will_paginate_twitter_bootstrap.configure_will_paginate" do
      require 'will_paginate/view_helpers/link_renderer'
      require 'will_paginate/view_helpers/action_view'

      module ::WillPaginate
        module ActionView
          def will_paginate(collection = nil, options = {})
            options[:renderer] ||= BootstrapLinkRenderer
            super.try :html_safe
          end

          class BootstrapLinkRenderer < LinkRenderer
            protected

            def html_container(html)
              tag :div, tag(:ul, html), container_attributes
            end

            def page_number(page)
              tag :li, link(page, page, :rel => rel_value(page)), :class => ('active' if page == current_page)
            end

            def previous_or_next_page(page, text, classname)
              tag :li, link(text, page || '#'), :class => [classname[0..3], classname, ('disabled' unless page)].join(' ')
            end

            def gap
              tag :li, link(super, '#'), :class => 'disabled'
            end
          end
        end
      end
    end
  end
end
